/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 马拉圈
 * Date: 2023-03-12
 * Time: 18:56
 */
public class Test5 {

    public static boolean flag;
    public static void main1(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            while(!flag) {
                System.out.println("好耶^v^");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break;
                }
            }
        });
        t1.start();
        Thread.sleep(3000);
        flag = true;
        System.out.println("不好耶T.T");
    }

    public static void main2(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            System.out.println("好耶 ^ v ^");
        });
        t.start();
        Thread.sleep(1000);
        System.out.println(t.isAlive());
    }

    static Thread thread;
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            while(!Thread.currentThread().isInterrupted()) {
                //在重写的五种方法里，t1都是后来诞生的，所以不能直接用，
                // 但是有一个方法可以使用到这个引用，其实就是这个线程的引用~代替他存在，但是不代表可以用t1
                //这个方法是Thread的静态方法，可以获取此线程的引用~
                System.out.println("好耶^v^");
                System.out.println(thread.getState());
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    break;
                }
            }
        });
        t1.start();
        thread = Thread.currentThread();
        t1.join(5000);//最多等待 10秒~
        //t1.join();//main 等待t1 运行结束~
        Thread.sleep(3000);
        t1.interrupt();
        //将标志符该为true,表示可以中断线程，当中断的同时，sleep会被强制唤醒，也就是说这样即使线程受sleep阻塞
        //也会被直接中断，而这种中断是靠抛异常中断的，但是这样又导致，标识符被清理
        //这样标识符又回到了false不能中断的状态，该线程循环将继续运行~
        //一个方法就是打印异常之后就break退出循环即可~
        System.out.println("不好耶T.T");
    }
}

